/**
 * @title: 返回一个比输入数大的2的n次幂
 * 也就是说，如果输入为 9，就要返回 16!
 * 先来假设 n 的二进制为 01xxx...xxx
 * 对 n 右移1位：001xx...xxx，再位或：011xx...xxx
 * 对 n 右移2为：00011...xxx，再位或：01111...xxx
 * 让最高位的1后面的位全变为 1
 *
 * static final : 一旦给值,就不可修改,并且可以通过类名访问,可以修饰方法,表示该方法不能重写,可以在不new对象的情况下调用.
 */
static final int tableSizeFor(int cap) {
    int n = cap - 1;
    n |= n >>> 1;
    n |= n >>> 2;
    n |= n >>> 4;
    n |= n >>> 8;
    n |= n >>> 16;
    return (n < 0) ? 1 : (n >= MAXIMUM_CAPACITY) ? MAXIMUM_CAPACITY : n + 1;
}